<?php
//======================================================================================
//
// Function: Get Timelog list from TEO
//
// Programmer: AR
// Date : 2025-03-26
//
// Copyright Reeft A/S (c) - 2025
//======================================================================================
//======================================================================================
// Set session
//======================================================================================
if(!isset($_SESSION))
{
session_start();
}
//======================================================================================
// Language data ["en", "de", "da", "no", "sv"]
//======================================================================================
$loginLanguage = $_SESSION['loginLanguage'];
include "language/$loginLanguage.php";
//======================================================================================
// General
//======================================================================================
include "include/apikey.php";
include "rft_apicall.php";
include "REEFT_date_convert/config_about_date.php";
include "REEFT_date_convert/REEFT_date_convert.php";
$returnResult = [];
$returnResult["error"] = "";
//======================================================================================
// Get input
//======================================================================================
if (isset($_SESSION["receivedToken"])) {
$receivedToken = $_SESSION["receivedToken"];
} else {
$returnResult["error"] = "receivedToken missing";
echo json_encode($returnResult);
exit;
}
if (isset($_SESSION["ConsiderOrganizationHeader"])) {
$ConsiderOrganizationHeader = $_SESSION["ConsiderOrganizationHeader"];
} else {
$ConsiderOrganizationHeader = "";
}
if (isset($_SESSION["UseSharedDb"])) {
$UseSharedDb = $_SESSION["UseSharedDb"];
} else {
$UseSharedDb = "";
}
if (isset($_SESSION["TargetOrganization"])) {
$TargetOrganization = $_SESSION["TargetOrganization"];
} else {
$TargetOrganization = "";
}
if (isset($_REQUEST["userId"])) {
$userId = $_REQUEST["userId"];
} else {
$userId = "";
}
if (isset($_REQUEST["startDate"])) {
$startDate = $_REQUEST["startDate"];
} else {
$startDate = "";
}
if (isset($_REQUEST["endDate"])) {
$endDate = $_REQUEST["endDate"];
} else {
$endDate = "";
}
$startDateUTC = REEFT_local_to_utc($startDate);
$endDateUTC = REEFT_local_to_utc($endDate);
$headers = [
'accept: text/plain',
'ConsiderOrganizationHeader: ' . $ConsiderOrganizationHeader,
'UseSharedDb: ' . $UseSharedDb,
'TargetOrganization: ' . $TargetOrganization,
];
$url = $rftUrl . '/TimeLog?UserId='.$userId.'&From='.urlencode($startDateUTC).'&To='.urlencode($endDateUTC).'&Statuses=0&Statuses=1&Statuses=2&Statuses=3';
$response = makeApiCall($url, $headers);
if (isset($response['error'])) {
$returnResult["error"] = $response['error'];
} else if (isset($response['data']) && is_array($response['data'])) {
// Create new data node
$i = 0;
foreach ($response['data'] as $dayArr) {
foreach ($dayArr as $key => $item) {
$tmpArr = array();
$tmpArr["id"] = $item["id"];
$tmpArr["status"] = $item["status"];
$tmpArr["statusName"] = $locale_text["TIMESHEET_STATUS"][$item["status"]];
$tmpArr["caseTypeName"] = $item["caseTypeName"];
$tmpArr["salaryTypeName"] = $item["salaryTypeName"];
$tmpArr["jobName"] = $item["jobName"];
$tmpArr["jobNumber"] = $item["jobNumber"];
$tmpArr["jobStatus"] = $item["jobStatus"];
$tmpArr["jobStatusName"] = $locale_text["JOB_STATUS"][$item["jobStatus"]];
$tmpArr["customerId"] = $item["customerId"];
$tmpArr["customerName"] = $item["customerName"];
$tmpArr["customerCode"] = $item["customerCode"];
$tmpArr["serviceUnitId"] = $item["serviceUnitId"];
$tmpArr["serviceUnitName"] = $item["serviceUnitName"];
$tmpArr["serviceUnitCode"] = $item["serviceUnitCode"];
$tmpArr["serviceUnitSerialNumber"] = @$item["serviceUnitSerialNumber"];
$tmpArr["activityTypeName"] = $item["activityTypeName"];
$tmpArr["addressName"] = @$item["addressName"];
$tmpArr["location"] = @$item["location"];
$tmpArr["street"] = @$item["street"];
$tmpArr["region"] = @$item["region"];
$tmpArr["zipCode"] = @$item["zipCode"];
$tmpArr["city"] = @$item["city"];
$tmpArr["country"] = @$item["country"];
$tmpArr["startLatitude"] = @$item["startLatitude"];
$tmpArr["startLongitude"] = @$item["startLongitude"];
$tmpArr["endLatitude"] = @$item["endLatitude"];
$tmpArr["endLongitude"] = @$item["endLongitude"];
$tmpArr["dayApproved"] = $item["dayApproved"];
$tmpArr["unit"] = @$item["unit"];
$tmpArr["noteBy"] = @$item["noteBy"];
$tmpArr["noteByUser"] = @$item["noteByUser"];
$tmpArr["noteDateTime"] = @$item["noteDateTime"];
$tmpArr["loggedStartTime"] = @$item["loggedStartTime"];
$tmpArr["loggedEndTime"] = @$item["loggedEndTime"];
$tmpArr["manualStartTime"] = @$item["manualStartTime"];
$tmpArr["manualEndTime"] = @$item["manualEndTime"];
$tmpArr["trackedStartTime"] = @$item["trackedStartTime"];
$tmpArr["trackedEndTime"] = @$item["trackedEndTime"];
$tmpArr["description"] = @$item["description"];
$tmpArr["salaryTypeId"] = $item["salaryTypeId"];
$tmpArr["jobId"] = $item["jobId"];
$tmpArr["date"] = $item["date"];
$tmpArr["unitValue"] = @$item["unitValue"];
$sortDate = "";
$sorttype = "";
// Manual time is the king, logged comes before tracked, if unit we just uses date to sort
if ($tmpArr["manualStartTime"] != null && strtoupper($tmpArr["manualStartTime"]) != 'NULL' && trim($tmpArr["manualStartTime"]) != "") {
$tmpArr["manualStartTimeLocal"] = REEFT_utc_to_local($tmpArr["manualStartTime"]);
$sortDate = $tmpArr["manualStartTime"];
$sorttype = "manual";
} else {
$tmpArr["manualStartTimeLocal"] = $tmpArr["manualStartTime"];
}
if ($tmpArr["manualEndTime"] != null && strtoupper($tmpArr["manualEndTime"]) != 'NULL' && trim($tmpArr["manualEndTime"]) != "") {
$tmpArr["manualEndTimeLocal"] = REEFT_utc_to_local($tmpArr["manualEndTime"]);
} else {
$tmpArr["manualEndTimeLocal"] = $tmpArr["manualEndTime"];
}
if ($tmpArr["loggedStartTime"] != null && strtoupper($tmpArr["loggedStartTime"]) != 'NULL' && trim($tmpArr["loggedStartTime"]) != "") {
$tmpArr["loggedStartTimeLocal"] = REEFT_utc_to_local($tmpArr["loggedStartTime"]);
if ($sortDate == "") {
$sortDate = $tmpArr["loggedStartTime"];
$sorttype = "logged";
}
} else {
$tmpArr["loggedStartTimeLocal"] = $tmpArr["loggedStartTime"];
}
if ($tmpArr["loggedEndTime"] != null && strtoupper($tmpArr["loggedEndTime"]) != 'NULL' && trim($tmpArr["loggedEndTime"]) != "") {
$tmpArr["loggedEndTimeLocal"] = REEFT_utc_to_local($tmpArr["loggedEndTime"]);
} else {
$tmpArr["loggedEndTimeLocal"] = $tmpArr["loggedEndTime"];
}
if ($tmpArr["trackedStartTime"] != null && strtoupper($tmpArr["trackedStartTime"]) != 'NULL' && trim($tmpArr["trackedStartTime"]) != "") {
$tmpArr["trackedStartTimeLocal"] = REEFT_utc_to_local($tmpArr["trackedStartTime"]);
if ($sortDate == "") {
$sortDate = $tmpArr["trackedStartTime"];
$sorttype = "tracked";
}
} else {
$tmpArr["trackedStartTimeLocal"] = $tmpArr["trackedStartTime"];
}
if ($tmpArr["trackedEndTime"] != null && strtoupper($tmpArr["trackedEndTime"]) != 'NULL' && trim($tmpArr["trackedEndTime"]) != "") {
$tmpArr["trackedEndTimeLocal"] = REEFT_utc_to_local($tmpArr["trackedEndTime"]);
} else {
$tmpArr["trackedEndTimeLocal"] = $tmpArr["trackedEndTime"];
}
if ($tmpArr["noteDateTime"] != null && strtoupper($tmpArr["noteDateTime"]) != 'NULL' && trim($tmpArr["noteDateTime"]) != "") {
$tmpArr["noteDateTimeLocal"] = REEFT_utc_to_local($tmpArr["noteDateTime"]);
} else {
$tmpArr["noteDateTimeLocal"] = $tmpArr["noteDateTime"];
}
if ($sortDate == "") {
$sortDate = $tmpArr["date"]."_".$key ;
$sorttype = "unit";
}
$tmpArr["sorttype"] = $sorttype;
$i++;
$returnResult[$sortDate] = $tmpArr;
}
}
}
ksort($returnResult); //sort by date asc
echo json_encode($returnResult);